import { removeToken, getToken, setToken } from '@/utils/auth'
import { login, getProfile, getUserDetailById } from '@/api/user'
import { resetRouter } from '@/router'
export default {
  namespaced: true,
  state: {
    token: getToken() || null, // 保存token
    userInfo: {} // 保存用户信息
  },
  mutations: {
    // 保存token
    setToken(state, mytoken) {
      state.token = mytoken
      setToken(mytoken)
    },
    // 删除 token
    removeToken(state) {
      state.token = null
      removeToken()
    },
    // 获取个人信息
    setUserInfo(state, playe) {
      state.userInfo = playe
    },
    // 情况个人信息
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    userLogout(context) {
      context.commit('removeToken')
      context.commit('removeUserInfo')
      // 重置路由 解决退出再登录时黄色警告问题
      resetRouter()
    },
    async Loing(context, payload) { // 登录
      console.log(context.state)
      const res = await login(payload)
      context.commit('setToken', res.data)
    },
    async getUserInfo(context) { // 获取个人信息
      const res = await getProfile() // 获取个人资料
      // const userID = res.data.userId
      console.log(res)
      const resID = await getUserDetailById(res.data.userId) // 获取头像
      // console.log(resID)

      context.commit('setUserInfo', { ...res.data, ...resID.data }) // 把 获取到的 个人资料和 头像合并成一个大对象保存到userInfo中
      // 返回roles.menus中可以访问路由的值
      return res.data.roles.menus
    }
  }
}
